/**
 *  Copyright 2007-2008 University Of Southern California
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing,
 *  software distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */
package edu.isi.pegasus.planner.parser;

import edu.isi.pegasus.common.logging.LogManager;
import edu.isi.pegasus.common.logging.LogManagerFactory;

import edu.isi.pegasus.planner.classes.PegasusBag;

import edu.isi.pegasus.planner.parser.dax.Callback;

import edu.isi.pegasus.planner.common.PegasusProperties;

import edu.isi.pegasus.common.util.Version;

/**
 * A Test Class to demonstrate use of DAXParser and illustrates how to use
 * the Callbacks for the parser.
 *
 * @author Karan Vahi
 * @version $Revision$
 */
public class TestDAXParser {

    /**
     * The main program to TestDAXParser.
     *
     * @param args
     */
    public static void main( String[] args ){
       if( args.length != 1 ){
           System.err.println( "The class takes in one argument - the path to the DAX file" );
           System.exit( 1 );
       }

       String daxFile = args[0];

       /* get handle to the Pegasus Properties File*/
       PegasusProperties properties = PegasusProperties.nonSingletonInstance();

       /* instantiate the internal Pegasus Logger */
       //setup the logger for the default streams.
       LogManager logger = LogManagerFactory.loadSingletonInstance( properties );
       logger.logEventStart( "example.dax.parser", "planner.version", Version.instance().toString() );
       logger.setLevel( 5 );

       /* pass the logger and properties to Pegasus Bag*/
       PegasusBag bag = new PegasusBag();
       bag.add( PegasusBag.PEGASUS_LOGMANAGER, logger );
       bag.add( PegasusBag.PEGASUS_PROPERTIES, properties );

       
       /* instantiate the DAX Parser and start parsing */
       try{
//           DaxParser parser = new DaxParser( daxFile, bag, mycallback );
           //DAXParser3 parser3 = new DAXParser3( daxFile, bag, mycallback );
           Parser daxParser = (Parser)DAXParserFactory.loadDAXParser( bag, "ExampleDAXCallback", daxFile );
           daxParser.startParser( daxFile );
       }
       catch( Exception e ){
           e.printStackTrace();
       }

    }
}


